﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CalculadoraEficiente
{
    public enum OPERACIONES_DISPONIBLES{
        SUMA, RESTA, MULTIPLICACION, DIVISION
    }


    public class Calculadora
    {
        Dictionary<OPERACIONES_DISPONIBLES, Operacion> operacionesDisponibles;


        public Calculadora(double numero1, double numero2)
        {
            this.operacionesDisponibles = new Dictionary<OPERACIONES_DISPONIBLES, Operacion>();
            
            Suma suma = new Suma(numero1, numero2);
            Resta resta = new Resta(numero1, numero2);
            Multiplicacion multiplicacion = new Multiplicacion(numero1, numero2);
            Division division = new Division(numero1, numero2);

            this.operacionesDisponibles.Add(OPERACIONES_DISPONIBLES.SUMA, suma);
            this.operacionesDisponibles.Add(OPERACIONES_DISPONIBLES.MULTIPLICACION, multiplicacion);
            this.operacionesDisponibles.Add(OPERACIONES_DISPONIBLES.RESTA, resta);
            this.operacionesDisponibles.Add(OPERACIONES_DISPONIBLES.DIVISION, division);
        }

        public double calcular(OPERACIONES_DISPONIBLES operacion)
        {
            Operacion operacionAEjecutar = this.operacionesDisponibles[operacion];
            return operacionAEjecutar.Operar();

        }
    }
}
